﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Conexion;
using AccesoDatos.Objetos;
using System.Data;

namespace AccesoDatos.Manejador
{
    public class Manejador_Vacaciones
    {
        ClsConexion conexion = new ClsConexion();
        objVacaciones obj = new objVacaciones();
        objRH obj1 = new objRH();
        public int id_actual;
        public DateTime fecha;
        public objVacaciones TiempoEmpleado(int id_empleado)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_empleado", id_empleado.ToString()));
                DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Consulta_Empleado", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                obj.Id_Vacaciones = int.Parse(Info[0].ToString().Trim());
                obj.Id_Empleados = int.Parse(Info[1].ToString().Trim());
                obj.Antigüedad = int.Parse(Info[2].ToString().Trim());
                obj.Dias_Correspondientes = int.Parse(Info[3].ToString().Trim());
                obj.Dias_Disfrutados = int.Parse(Info[4].ToString().Trim());
                obj.Prima_Vacacional = (Info[5].ToString().Trim());
                obj.Prima_Pagada = Info[6].ToString().Trim();
                obj.Estatus = Info[7].ToString().Trim();
                obj.Dias_Restantes = int.Parse(Info[8].ToString().Trim());
                obj.Dias_Programados = int.Parse(Info[9].ToString().Trim());
                obj.Dias_Acomulados = int.Parse(Info[10].ToString().Trim());
                obj.Referencia = Info[11].ToString().Trim();
                obj.Ciclo = Info[12].ToString().Trim();
                obj.Periodo = int.Parse(Info[13].ToString().Trim());

                return obj;
            }
            catch { return null; }
        }

        public DataTable ListaVacaciones(string buscar, string sucursal)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", buscar));
            lista.Add(new ClsParametros("@sucursal", sucursal));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Consulta_Lista_Empleados", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);
            return X;
        }

        public bool InsercionVacaciones(string Id_vacaciones, DateTime fecha_solicitud, string fecha_inicio,
                string fecha_fin, string id_aprobador, string id_suplente, string autorizacion,
                string dias_solicitados, string completado, string comentario, int estatus
            )
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@Id_vacaciones", Id_vacaciones));
                lista.Add(new ClsParametros("@fecha_solicitud", fecha_solicitud.ToShortDateString()));
                lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio));
                lista.Add(new ClsParametros("@fecha_fin", fecha_fin));
                lista.Add(new ClsParametros("@id_aprobador", id_aprobador));
                lista.Add(new ClsParametros("@id_suplente", id_suplente));
                lista.Add(new ClsParametros("@autorizacion", autorizacion));
                lista.Add(new ClsParametros("@dias_solicitados", dias_solicitados));
                lista.Add(new ClsParametros("@completado", completado));
                lista.Add(new ClsParametros("@comentario", comentario));
                lista.Add(new ClsParametros("@estatus", estatus.ToString()));
                DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_add_Empleado", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                id_actual = int.Parse(Info[0].ToString().Trim());
                fecha = DateTime.Parse(Info[1].ToString().Trim());
                return true;
            }
            catch
            {
                return false;
            }
        }

        public DataTable ListaCursandoVac(string buscar,string sucursal,string tipo)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", buscar));
            lista.Add(new ClsParametros("@sucursal", sucursal));
            lista.Add(new ClsParametros("@tipo", tipo));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Consulta_Lista_Empleados_Cursando", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);
            return X;
        }

        public string NombreEmpleado(int id_empleado)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_empleado", id_empleado.ToString()));
                DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Consulta_Nombre_Empleado", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                obj.Nombre_Aprobador = Info[0].ToString().Trim();

                return obj.Nombre_Aprobador;
            }
            catch { return null; }
        }

        public bool ModificarVacaciones(string Id_vacaciones, DateTime fecha_solicitud, DateTime fecha_inicio,
                DateTime fecha_fin, string id_aprobador, string id_suplente, string autorizacion,
                string dias_solicitados, string completado, string comentario, int estatus
            )
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@Id_vacaciones", Id_vacaciones));
                lista.Add(new ClsParametros("@fecha_solicitud", fecha_solicitud.ToShortDateString()));
                lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
                lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
                lista.Add(new ClsParametros("@id_aprobador", id_aprobador));
                lista.Add(new ClsParametros("@id_suplente", id_suplente));
                lista.Add(new ClsParametros("@autorizacion", autorizacion));
                lista.Add(new ClsParametros("@dias_solicitados", dias_solicitados));
                lista.Add(new ClsParametros("@completado", completado));
                lista.Add(new ClsParametros("@comentario", comentario));
                lista.Add(new ClsParametros("@estatus", estatus.ToString()));
                DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Interrumpidas", lista);
                DataRow[] array = new DataRow[X.Rows.Count];
                X.Rows.CopyTo(array, 0);
                object[] Info = X.Rows[0].ItemArray;
                id_actual = int.Parse(Info[0].ToString().Trim());
                fecha = DateTime.Parse(Info[1].ToString().Trim());
                return true;
            }
            catch
            {
                return false;
            }

        }


        public objVacaciones DatosAsignacionVac(int id_vacaciones)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_vacaciones", id_vacaciones.ToString()));
                DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Asignacion_Consulta_Empleado", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                obj.Id_Relacion_Vacaciones = int.Parse(Info[0].ToString().Trim());
                obj.Id_Vacaciones = int.Parse(Info[1].ToString().Trim());
                // obj.Id_Vacacion_Padre = int.Parse(Info[2].ToString().Trim());
                // obj.Fecha_Solicitud = DateTime.Parse(Info[3].ToString().Trim());
                obj.Fecha_Inicio_Vacaciones = DateTime.Parse(Info[4].ToString().Trim());
                obj.Fecha_fin_vacaciones = DateTime.Parse(Info[5].ToString().Trim());
                obj.Id_Aprobador = int.Parse(Info[6].ToString().Trim());
                obj.Id_Suplente = int.Parse(Info[7].ToString().Trim());
                obj.Autorizacion = bool.Parse(Info[8].ToString().Trim());
                obj.Dias_Solicitados = int.Parse(Info[9].ToString().Trim());
                // obj.Completado = Info[10].ToString().Trim();
                obj.Comentario = Info[11].ToString().Trim();
                // obj.Estatus1= Info[12].ToString().Trim();

                return obj;
            }
            catch { return null; }
        }

        public DataTable ListaEmpleadosDiasP(string buscar, string sucursal,string tipo)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", buscar));
            lista.Add(new ClsParametros("@sucursal", sucursal));
            lista.Add(new ClsParametros("@tipo", tipo));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Consulta_Lista_Empleados_DiasPendientes", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);
            return X;
        }

        public DataTable ListaVacacionesProgramadas(string buscar,string sucursal)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", buscar));
            lista.Add(new ClsParametros("@sucursal", sucursal));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Consulta_Lista_Prog", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);
            return X;
        }


        //Dias pendientes
        public bool ModificarDiasP(string Id_empleado, string Accion)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@Id_empleado", Id_empleado));
                lista.Add(new ClsParametros("@Accion", Accion));

                bool resp = conexion.Procedure_standart("sp_RH_Vacaciones_Modificar_DiasPendientes", lista);
                return true;
            }
            catch
            {
                return false;
            }
        }

        public bool ModificarDiasProg(string Id_relacion_vacaciones, string Id_vacaciones)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@Id_relacion_vacaciones", Id_relacion_vacaciones));
                lista.Add(new ClsParametros("@Id_vacaciones", Id_vacaciones));

                bool resp = conexion.Procedure_standart("sp_RH_Vacaciones_Prog_Canceladas", lista);
                return true;
            }
            catch
            {
                return false;
            }
        }

        //MUESTRA LA LISTA DE LOS EMPLEADOS CON EL ESTATUS DE VACACIONES SELECCIONADO Y LAS FECHAS DADAS

        public DataTable ReportVacacionesConsultaEmpleado(string Buscar,string completado,string sucursal,DateTime fecha_inicio,DateTime fecha_fin)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", Buscar));
            lista.Add(new ClsParametros("@completado", completado));
            lista.Add(new ClsParametros("@sucursal", sucursal));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_Vacacion", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            datos.Columns.Add(columna);
            return datos;
        }

        public objVacaciones VacacionesDatosEmpleado(string Buscar, string completado, string sucursal, DateTime fecha_inicio, DateTime fecha_fin)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", Buscar));
            lista.Add(new ClsParametros("@completado", completado));
            lista.Add(new ClsParametros("@sucursal", sucursal));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_Vacacion", lista);
            DataRow[] array = new DataRow[datos.Rows.Count];
            datos.Rows.CopyTo(array, 0);
            object[] Info = datos.Rows[0].ItemArray;
            obj.Id_Vacaciones = int.Parse(Info[0].ToString().Trim());

            return obj;
        }


        public DataTable ReportVacacionesEmpleado(int id_empleado, string completado, DateTime fecha_inicio, DateTime fecha_fin)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_empleado", id_empleado.ToString()));
            lista.Add(new ClsParametros("@completado", completado));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Empleado_Reporte_Todas", lista);
            return datos;
        }

        public DataTable ReportVacacionesSucursal(string id_sucursal, string completado, DateTime fecha_inicio, DateTime fecha_fin)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_sucursal", id_sucursal));
            lista.Add(new ClsParametros("@completado", completado));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_Sucursales", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            datos.Columns.Add(columna);
            return datos;
        }

        public DataTable ReportVacacionesVacaciones(int id_relacion_vacaciones)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_relacion_vacaciones", id_relacion_vacaciones.ToString()));

            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_Datos", lista);
            return datos;
        }

        public DataTable ReportVacacionesAñosCump(int id_vacaciones)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_vacaciones", id_vacaciones.ToString()));
            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_Años_cumpldidos", lista);
            return datos;
        }

        public bool ValidacionFechas(int id_vacaciones,DateTime fecha)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_vacaciones", id_vacaciones.ToString()));
                lista.Add(new ClsParametros("@fecha", fecha.ToShortDateString()));
                bool resp = conexion.Procedure_standart("sp_RH_Vacaciones_Fechas_Validacion", lista);
                
                return true; 
            }
            catch { return false; }
        }

        public bool VacacionesAutorizacion(int id_relacion_vacaciones)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_Relacion_Vacaciones", id_relacion_vacaciones.ToString()));
                DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Autorizaciones", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                fecha = DateTime.Parse(Info[0].ToString().Trim());
                return true;
            }
            catch { return false; }
        }

        public DataTable ListaVacacionesDisfrutadasSinpagar(string id_sucursal)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_sucursal", id_sucursal));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Lista_Pago", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);
            return X;
        }

        public bool PagarVacaciones(int id_Relacion_Vacaciones, DateTime fecha_pago, string monto_pagar)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_Relacion_Vacaciones", id_Relacion_Vacaciones.ToString()));
                lista.Add(new ClsParametros("@fecha_pago", fecha_pago.ToShortDateString()));
                lista.Add(new ClsParametros("@monto_pagar", monto_pagar));
                bool resp = conexion.Procedure_standart("sp_RH_Vacaciones_Pagar", lista);
                return true;
            }
            catch { return false; }
        }

        public DataTable VacacionesEmpleados(string Buscar,string sucursal)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", Buscar));
            lista.Add(new ClsParametros("@Sucursal", sucursal));
            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Empleados", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            datos.Columns.Add(columna);

            return datos;
        }

        public DataTable ReporteEmpleadoGeneral(int @id_empleado)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_empleado", @id_empleado.ToString()));
            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_General_Empleado", lista);
            return datos;
        }

        public DataTable ReporteEmpleadoHistorial(int id_empleado,DateTime fecha_inicio,DateTime fecha_fin, string completado)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_empleado", id_empleado.ToString()));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            lista.Add(new ClsParametros("@completado", completado));
            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_Vacaciones_Todas", lista);
            return datos;
        }

        public bool PagarDias(int id_vacaciones, DateTime Fecha_Pago, int Dias_Pagar, string Monto_Dia, string Monto_Total, string Justificacion, string tipo_dias)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_vacaciones", id_vacaciones.ToString()));
                lista.Add(new ClsParametros("@Fecha_Pago", Fecha_Pago.ToShortDateString()));
                lista.Add(new ClsParametros("@Dias_Pagar", Dias_Pagar.ToString()));
                lista.Add(new ClsParametros("@Monto_Dia", Monto_Dia));
                lista.Add(new ClsParametros("@Monto_Total", Monto_Total));
                lista.Add(new ClsParametros("@Comentario", Justificacion));
                lista.Add(new ClsParametros("@tipo_dias", tipo_dias));
                DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_add_pago", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                id_actual = int.Parse(Info[0].ToString().Trim());
                fecha = DateTime.Parse(Info[1].ToString().Trim());
                return true;
            }
            catch { return false; }
        }

        public objRH ConsultaJefe(int id_vacaciones)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_vacaciones", id_vacaciones.ToString()));
            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Jefe_Empleado", lista);
            DataRow[] array = new DataRow[datos.Rows.Count];
            datos.Rows.CopyTo(array, 0);
            object[] Info = datos.Rows[0].ItemArray;
            obj1.IdJefe= int.Parse(Info[0].ToString().Trim());

            return obj1;
        }

        public objRH ConsultaSueldoDiario(int id_empleado)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_empleado", id_empleado.ToString()));
            DataTable datos = conexion.Datatable_standart("sp_RH_Empleado_Consulta_Sueldo", lista);
            DataRow[] array = new DataRow[datos.Rows.Count];
            datos.Rows.CopyTo(array, 0);
            object[] Info = datos.Rows[0].ItemArray;
            obj1.Salario_dia = Info[0].ToString();

            return obj1;
        }

        public bool ModificarPago(int id_Vacaciones_Pago, int Dias_Pagar, string Monto_Dia, string Monto_Total, string Justificacion, string Tipo_Dias, DateTime fecha)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_Vacaciones_Pago", id_Vacaciones_Pago.ToString()));
                lista.Add(new ClsParametros("@Dias_Pagar", Dias_Pagar.ToString()));
                lista.Add(new ClsParametros("@Monto_Dia", Monto_Dia));
                lista.Add(new ClsParametros("@Monto_Total", Monto_Total));
                lista.Add(new ClsParametros("@Comentario", Justificacion));
                lista.Add(new ClsParametros("@Tipo_dias", Tipo_Dias));
                lista.Add(new ClsParametros("@fecha", fecha.ToShortDateString()));
                bool resp = conexion.Procedure_standart("sp_RH_Vacaciones_modifica_pago", lista);
                return true;
            }
            catch { return false; }
        }

        public bool VacPagos(int ID, string tipo)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@ID", ID.ToString()));
                lista.Add(new ClsParametros("@tipo", tipo));
                bool resp = conexion.Procedure_standart("sp_RH_Vacaciones_Pagos", lista);
                return true;
            }
            catch { return false; }
        }

        public DataTable ReportePagos(int id,string pago)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id", id.ToString()));
            lista.Add(new ClsParametros("@pago", pago));
            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_Pagos", lista);
            return datos;
        }

        public DataTable ReportVacacionesConsultaPagos(string Buscar, string tipo, string sucursal,DateTime fecha_inicio,DateTime fecha_fin,bool autorizacion)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", Buscar));
            lista.Add(new ClsParametros("@tipo", tipo));
            lista.Add(new ClsParametros("@sucursal", sucursal));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            lista.Add(new ClsParametros("@autorizacion", autorizacion.ToString()));

            DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_Consulta_Pagos", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            datos.Columns.Add(columna);
            return datos;
        }

        public DataTable ListaHistorialTodas(string id_sucursal)
        {

            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_sucursal", id_sucursal));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Lista_Pago", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);
            return X;
        }

        public DataTable ListaParaReporteHistorial(string Buscar, string completado, string sucursal, DateTime fecha_inicio, DateTime fecha_fin)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", Buscar));
            lista.Add(new ClsParametros("@completado", completado));
            lista.Add(new ClsParametros("@sucursal", sucursal));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Lista_Historial_Todas", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);

            return X;
        }

        public DataTable DatosPrima(int id,string prima)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id", id.ToString()));
            lista.Add(new ClsParametros("@prima", prima));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Consulta_Datos_Prima", lista);
            return X;
        }

        public bool pagar_prima(int id_prima_vacacional, string monto_prima, DateTime fecha_pago, string gratificacion, string monto_diario)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_prima_vacacional", id_prima_vacacional.ToString()));
                lista.Add(new ClsParametros("@monto_prima", monto_prima));
                lista.Add(new ClsParametros("@fecha_pago", fecha_pago.ToShortDateString()));
                lista.Add(new ClsParametros("@gratificacion", gratificacion));
                lista.Add(new ClsParametros("@monto_diario", monto_diario));
                DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Prima_Modifica", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                fecha = DateTime.Parse(Info[0].ToString().Trim());
                return true;
            }
            catch { return false; }
        }

       

        public DataTable Lista_prima(string Buscar, string sucursal, string tipo)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", Buscar));
            lista.Add(new ClsParametros("@sucursal", sucursal));
            lista.Add(new ClsParametros("@tipo", tipo));
           
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Consulta_Lista_Primas", lista);
            DataColumn columna = new DataColumn();
            columna.ColumnName = "Nombre_apellidos";
            columna.Expression = string.Format("nombre +' '+ apellidos");
            X.Columns.Add(columna);
            return X;
        }

        public DataTable Lista_Prima_Reporte(string id_sucursal, string programada, DateTime fecha_inicio, DateTime fecha_fin, bool autorizado)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_sucursal", id_sucursal));
            lista.Add(new ClsParametros("@programada", programada));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            lista.Add(new ClsParametros("@autorizado", autorizado.ToString()));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_Lista_Pagos", lista);
            return X;
        }

        public DataTable Datos_DiasAcoumulados(int id_empleado)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_empleado", id_empleado.ToString()));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Consulta_Datos_DiasAcomulados", lista);
            
            return X;
        }

        public double Monto(int id, string tipo)
        {
            try
            {
                double monto;
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@ID", id.ToString()));
                lista.Add(new ClsParametros("@tipo", tipo));
                DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Consulda_Montos", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                monto = Convert.ToDouble(Info[0].ToString().Trim());

                return monto;
            }
            catch { return 0; }
        }

        public DataTable ReporteDias(int id_Vacaciones_pago)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@ID", id_Vacaciones_pago.ToString()));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_DiasV", lista);

            return X;
        }

        public DataTable Lista_Años_Cumplir(string Buscar, string sucursal, int dias, string tipo)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@Buscar", Buscar));
            lista.Add(new ClsParametros("@sucursal", sucursal));
            lista.Add(new ClsParametros("@dias", dias.ToString()));
            lista.Add(new ClsParametros("@tipo", tipo));

            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Lista_Cumplir_Años", lista);
            
            return X;
        }

        public DataTable llenar_correo(int id_empleado,int id_correo_vacaciones)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_empleado", id_empleado.ToString()));
            lista.Add(new ClsParametros("@id_correo_vacaciones", id_correo_vacaciones.ToString()));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Correo", lista);

            return X;
        }

        public bool Guardar_Correo(
            int id_empleado, int id_correo_vacaciones, int id_vacaciones, 
            string cc, string correo_empleado, string Mensaje)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_empleado", id_empleado.ToString()));
                lista.Add(new ClsParametros("@id_correo_vacaciones", id_correo_vacaciones.ToString()));
                lista.Add(new ClsParametros("@id_vacaciones", id_vacaciones.ToString()));
                lista.Add(new ClsParametros("@cc", cc));
                lista.Add(new ClsParametros("@correo_empleado", correo_empleado));
                lista.Add(new ClsParametros("@Mensaje", Mensaje));
                bool resp = conexion.Procedure_standart("sp_RH_Vacaciones_add_Correo", lista);
                return true;
            }
            catch { return false; }
        }


        public int Max_Id(int id_vacaciones,string tipo)
        {
            try
            {
                int monto;
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_vacaciones", id_vacaciones.ToString()));
                lista.Add(new ClsParametros("@tipo", tipo));
                DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Consulta_Max_Id", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                monto = Convert.ToInt16(Info[0]);

                return monto;
            }
            catch { return 0; }
        }

        public int rango_fechas(int id_vacaciones, DateTime fecha1, DateTime fecha2,int tipo)
        {
            try
            {
                int id;
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_vacaciones", id_vacaciones.ToString()));
                lista.Add(new ClsParametros("@fecha1", fecha1.ToShortDateString()));
                lista.Add(new ClsParametros("@fecha2", fecha2.ToShortDateString()));
                lista.Add(new ClsParametros("@tipo", tipo.ToString()));
                DataTable datos = conexion.Datatable_standart("sp_RH_Vacaciones_Valida_Fechas", lista);
                DataRow[] array = new DataRow[datos.Rows.Count];
                datos.Rows.CopyTo(array, 0);
                object[] Info = datos.Rows[0].ItemArray;
                id = Convert.ToInt16(Info[0]);

                return id;
            }
            catch { return 0; }
        }

        public bool CancelarDiasPago(int id_vacaciones_pago)
        {
            try
            {
                List<ClsParametros> lista = new List<ClsParametros>();
                lista.Add(new ClsParametros("@id_vacaciones_pago", id_vacaciones_pago.ToString()));

                bool resp = conexion.Procedure_standart("sp_RH_Vacaciones_dias_Cancelar", lista);
                return true;
            }
            catch
            {
                return false;
            }
        }

        public DataTable Lista_Pagos_Reporte(string id_sucursal, DateTime fecha_inicio, DateTime fecha_fin, bool autorizado)
        {
            List<ClsParametros> lista = new List<ClsParametros>();
            lista.Add(new ClsParametros("@id_sucursal", id_sucursal));
            lista.Add(new ClsParametros("@fecha_inicio", fecha_inicio.ToShortDateString()));
            lista.Add(new ClsParametros("@fecha_fin", fecha_fin.ToShortDateString()));
            lista.Add(new ClsParametros("@autorizado", autorizado.ToString()));
            DataTable X = conexion.Datatable_standart("sp_RH_Vacaciones_Reporte_Lista_PagosDias", lista);
            return X;
        }

    }

}
